package com.augurit.gzcgwsp.sendNotice.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springside.modules.orm.Page;

import com.augurit.common.base.service.ICrudService;
import com.augurit.gzcgwsp.sendNotice.entity.YwWebserviceInfo;
import com.augurit.gzcgwsp.sendNotice.web.form.YwWebserviceInfoForm;
import com.augurit.wf.bi.web.form.WfBusInstanceTaskForm;

public interface IYwWebserviceInfoService extends ICrudService<YwWebserviceInfoForm, Long> {

	/**
	 * 保存webservice接口的信息
	 * @param ywWebserviceInfo
	 */
	public void save(YwWebserviceInfo ywWebserviceInfo);
	public YwWebserviceInfoForm get(Long id);
	
	public YwWebserviceInfo getYwWebserviceInfoById(Long id);
	
	/**
	 * 产生一个YwWebserviceInfo实体
	 * 
	 * @param noticeLabelMap 通知的键值
	 * @param flag 判断是否是我们系统收的案，而且是窗口收案环节，是则为true
	 * @param acceptNo 受理号          
	 * @param approvalNo 方欣那边的受理号
	 * @return YwWebserviceInfo实体
	 */
	public YwWebserviceInfo createYwWebserviceInfo(Map<String,String> noticeLabelMap,boolean flag,String acceptNo,String approvalNo);
	
	/**
	 * 获得还没有发送的记录  案件状态接口
	 * @return
	 */
	public List getNoticeYwWebserviceInfo();
	
	/**
	 * 获得还没有发送的记录  公示结束接口
	 * @return
	 */
	public List getStopPublicYwWebserviceInfo();
	
	/**
	 * 当webservice调用成功，则把改记录的isSended字段的值改成1
	 * @param id
	 */
	public void changState(long id);
	
	/**
	 * 根据acceptNo获取结束公示的一条记录
	 * @param acceptNo
	 * @return
	 */
	public YwWebserviceInfo getStopYwWebserviceInfoByAcceptNo(String acceptNo);
	
	/**
	 * 获得还没有发送的同步用户或者行政组织记录
	 * @return
	 */
	public List getsyncUserAndOrgYwWebServiceInfo();
	
	/**
	 * 把改记录的isSended字段的值改成空，则定时器可以查到
	 * @param acceptNo 系统受理号
	 * @param approvalNo 方欣那边的受理号
	 */
	public void changStateToNullByAcceptNo(String acceptNo,String approvalNo);
	
	/**
	 * 保存数据到YwWebserviceInfo表，用于交换给方欣
	 * @param sqrq								申请日期
	 * @param acceptNo							受理号
	 * @param cbyw								承办业务
	 * @param lxr								联系人
	 * @param sjr								收件人
	 * @param sqdw								申请单位
	 * @param businessCode						业务编码
	 * @param approvalNo						长预受理号
	 * @param loginUserName						登录用户名称
	 * @param dpm								部门
	 * @param thisNoteActivityName				本节点的英文名称
	 * @param acceptTime						办理时间
	 * @param flag								是否是窗口收案环节
	 * @param thisNoteActivityChineseName		本节点的中午名称
	 * @param instance							
	 */
	public void saveYwWebserviceInfo(Date sqrq,String acceptNo,String cbyw,String lxr,String sjr,String sqdw,String businessCode,String approvalNo,
			String loginUserName,String dpm,String thisNoteActivityName,Date acceptTime,boolean flag,String thisNoteActivityChineseName,
			WfBusInstanceTaskForm instance);
	
	/**
	 * 记录调用次数，一天发送50次失败的都没有成功的话，第二天再交换
	 * @param id
	 */
	public void callRecord(Long id);
	
	public Page<YwWebserviceInfoForm> searchPage(Page<YwWebserviceInfoForm> page,Map map);
}
